t = int(input())
while t:
n = int(input())
s = input()
if s.count("10"):
lef,rig,sw = 1,1,1
for i in range(n):
if s[i] == '1':
lef = i
break
for i in range(n-1,0,-1):
if s[i]=='0':
rig=i
break
st=s[:lef] + '0' + s[rig+1:]
print(st)
else:
print(s)
t -= 1
#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll const inf = 1e17+1;
ll const M = 1e5+10;
ll const N = 100001;
const int mod = 1e9+7;
ll dx[8]={1,0,-1,0,1,-1,-1,1};
ll dy[8]={0,1,0,-1,1,-1,1,-1};
ll gcd(ll a, ll b)
{
return b==0 ? a : gcd(b,a%b);
}
ll lcm(ll a, ll b) {
return (a*b/gcd(a,b));
}
void solve(int te) {
// cout << "Case #" << te << ": ";
ll n; cin>>n;
string s; cin>>s;
string ans;
ll sw = 1;
for(ll i=1;i<n;i++) {
if(s[i] < s[i-1])sw = 0;
}
if(sw) {
cout<<s<<endl;
return;
}
for(ll i=0;i<n;i++) {
if(s[i]=='1')break;
ans.push_back(s[i]);
}
ans.push_back('0');
for(ll i=s.size()-1;i>=0;i--) {
if(s[i]=='0')break;
ans.push_back(s[i]);
}
cout<<ans<<endl;
}
int main()
{
ios_base::sync_with_stdio(false), cin.tie(nullptr);
// #ifndef ONLINE_JUDGE
// freopen("input.txt","r",stdin);
// freopen("output.txt","w",stdout);
// #endif
int T;
cin >> T;
for(int t = 1; t <= T; t++)solve(t);
// solve(1);
}
620A - Professor GukiZ's Robot | 1342A - Road To Zero |
1520A - Do Not Be Distracted | 352A - Jeff and Digits |
1327A - Sum of Odd Integers | 1276A - As Simple as One and Two |
812C - Sagheer and Nubian Market | 272A - Dima and Friends |
1352C - K-th Not Divisible by n | 545C - Woodcutters |
1528B - Kavi on Pairing Duty | 339B - Xenia and Ringroad |
189A - Cut Ribbon | 1182A - Filling Shapes |
82A - Double Cola | 45A - Codecraft III |
1242A - Tile Painting | 1663E - Are You Safe |
1663D - Is it rated - 3 | 1311A - Add Odd or Subtract Even |
977F - Consecutive Subsequence | 939A - Love Triangle |
755A - PolandBall and Hypothesis | 760B - Frodo and pillows |
1006A - Adjacent Replacements | 1195C - Basketball Exercise |
1206A - Choose Two Numbers | 1438B - Valerii Against Everyone |
822A - I'm bored with life | 9A - Die Roll |